package com.implementacion;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.bean.BGenerico;
import com.bean.BTipoCliente;
import com.ibatis.dao.client.DaoException;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;
import com.ibatis.sqlmap.client.SqlMapExecutor;
import com.interfaces.ITipoCliente;

public class DTipoCliente extends SqlMapDaoTemplate implements ITipoCliente {
    
	
    public DTipoCliente(DaoManager daoManager) {
        super(daoManager);
    }

    public BGenerico registrar(BGenerico tipoCliente) {    	
    	System.out.println("DTipoCliente - registrar");
    	try{
    			SqlMapExecutor sqlMap = getSqlMapExecutor();		
    			Map parametros = new HashMap();
    			BTipoCliente objTipoCliente = (BTipoCliente)tipoCliente;
                parametros.put("P_NO_TIPO_CLIE",objTipoCliente.getNo_tipo_clie());                
                sqlMap.queryForList("registrarTcliente",parametros);  
               
               
		}catch(SQLException e){		    
		    throw new DaoException("ERROR AL INSETAR BGenerico");
		}	
    	
        return null;
    }

    public BGenerico actualizar(BGenerico tipoCliente) {
    	System.out.println("DTipoCliente - actualizar");
    	try{
			SqlMapExecutor sqlMap = getSqlMapExecutor();
			BTipoCliente objTipoCliente = (BTipoCliente)tipoCliente;
			Map parametros = new HashMap();			
            parametros.put("P_CO_TIPO_CLIE",objTipoCliente.getCo_tipo_clie());    
            parametros.put("P_NO_TIPO_CLIE",objTipoCliente.getNo_tipo_clie());
            sqlMap.queryForList("modificarTcliente",parametros);          
		}catch(SQLException e){		    
		    throw new DaoException("ERROR AL actualizar BGenerico");
		}	
        return null;
    }

    public void eliminar(BGenerico tipoCliente) {
    	System.out.println("DTipoCliente - eliminar");
    	try{
			SqlMapExecutor sqlMap = getSqlMapExecutor();
			BTipoCliente objTipoCliente = (BTipoCliente)tipoCliente;
			Map parametros = new HashMap();			
            parametros.put("P_CO_TIPO_CLIE",objTipoCliente.getCo_tipo_clie());            
            sqlMap.queryForList("eliminarTcliente",parametros);          
		}catch(SQLException e){		    
		    throw new DaoException("ERROR AL actualizar BGenerico");
		}
    }

    public List listar() {
    	System.out.println("DTipoCliente - listar");
    	List Lista = null;    	
    	Map parametros = new HashMap();    	
    	
    	try{SqlMapExecutor sqlMap = getSqlMapExecutor();
	        return sqlMap.queryForList("LISTA_PAGINADOTCLIENTE", parametros);			
	    }catch(SQLException e){  
	    	System.out.println("error");
	    	throw new DaoException();
	    }
    }
    
    public List listar(HashMap map) {
    	System.out.println("DTipoClienteBase - listarTipoClienteFiltro");
    	Map parametros = new HashMap();
    	parametros.put("begin", map.get("begin"));
    	System.out.println(" > valor : " + map.get("begin"));
    	parametros.put("end", map.get("end"));
    	System.out.println(" > valor : " + map.get("end"));
    	System.out.println("parametros.size = " + parametros.size());
    	try{
    		SqlMapExecutor sqlMap = getSqlMapExecutor();
	        return sqlMap.queryForList("LISTA_PAGINADO_FILTRO_TC", parametros);			
	    }catch(Exception e){
	    	StackTraceElement[] xx = e.getStackTrace();
	    	for(int i=0;i<xx.length;i++){
	    		System.err.println("TRAZA-ERROR : " + xx[i]);
	    	}
	    	throw new DaoException();
	    }
    }

	public List listar(BGenerico tipoCliente) {
		// TODO Auto-generated method stub
		return null;
	}

	public BGenerico buscar(BGenerico obj) {
		// TODO Auto-generated method stub
		return null;
	}

	public Long contarFilas() {
		Long contadorFilas = null;
    	System.out.println("DTipoCliente - contarFilasTipoCliente");
    	
    	try{SqlMapExecutor sqlMap = getSqlMapExecutor();
    		contadorFilas = (Long)sqlMap.queryForObject("GET_TIPOCLIENTE_COUNT");
    		System.out.println("Numero de filas para el query GET_TIPOCLIENTE_COUNT = " + contadorFilas);
	        return contadorFilas;			
	    }catch(Exception e){
	    	StackTraceElement[] xx = e.getStackTrace();
	    	for(int i=0;i<xx.length;i++){
	    		System.err.println(xx[i]);
	    	}
	    	throw new DaoException();
	    }
	}

	public boolean validar(BGenerico cliente) {
		// TODO Auto-generated method stub
		return false;
	}
}
